// Loesung_von_Aufgabe_2.3.4_1a_unelastischer_Stoss

// Versuche zum vollkommen unelastischer Stoß 

// LösungderTeilaufgabe a): m1 = 2; v1 = -2 --> u1 = u2 = 0

float x1 = 0; // Ortskoordinate des gelben Körpers vor den Start
float x2 = 400; // Ortskoordinate des roten Körpers vor dem Start
float v1 = 1; // Geschwindigkeit des gelben Körpers vor dem Stoß
float v2 = -2.0; // Geschwindigkeit des roten Körpers vor dem Stoß
float u1; // Geschwindigkeit des gelben Körpers nach dem Stoß
float u2; // Geschwindigkeit des roten Körpers nach dem Stoß
float m1 = 2; // Masse des gelben Körpers
float m2 = 1; // Masse des roten Körpers
float t = 1; // Zeiteinheit pro Frame

void setup() 
{
  size(400, 200); // Fenstergröße
}

void draw() 
{
  background(255); // Hintergrundfarbe

  fill(0, 0, 255); // Textfarbe
  textSize(24); // Textgröße
  textAlign(CENTER); // Setzt die Mitte des Textes auf den unten gewählten x-Wert (200).
  text("vollkommen unelastischer Stoß", 200, 40);

  fill(255, 255, 0); //gelber Körper
  rect(x1, 200 - m1*20, 50, m1*20); // Die Höhe des gelben Körpers wächst mit seiner Masse.

  fill(255, 0, 0);// roter Körper
  rect(x2, 200 - m2*20, 50, m2*20); // Die Höhe des roten Körpers wächst mit seiner Masse.

  if (x1 <= x2 - 50)
  {
    /* Nur solange die if-Bedingung erfüllt ist, nimmt x1 um das gleiche Streckenstück v1*t zu 
     und x2 um das gleiche Streckenstück v2+t ab, da v2 negativ ist. */
    x1 = x1 + v1*t; // Ortskoordinate von Gelb vor dem Stoß
    x2 = x2 + v2*t;  // Ortskoordinate von Rot vor dem Stoß
  }

  if (x1 >= x2 - 51)
  {
    u1 = (m1*v1+m2*v2)/(m1+m2); // Geschwindigkeit des gelben Körpers nach dem Stoß 
    u2 = u1; // Da m1 und m2 nach dem Stoß eine Einheit bilden gilt u1 = u2.

    x1 = x1 + u1*t; // Ortskoordinate des gelben Körpers nach dem Stoß
    x2 = x2 + u2*t; // Ortskoordinate des roten Körpers nach dem Stoß

    println("u1 = u2 = ", u1); // Die Werte für u1 und u1 werden in der Konsole angezeigt.
  }
}